home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)zf.d64
/
txt.bootm
< prev
next >
Wrap
Text File
|
2007-03-01
|
22KB
|
671 lines
╓╫╤╒C@@@@@@@@╓╔┌.┬╧╧╘╒╙┴áá áV@ NY┬@YA@Y@A@F@N ááááááááááááááááD╗P @**********************************************************@ ▒ª █
╠ISTING OF ┼╪├╧═┴╠.14
├300 PHA SAVE ACCU ON STACK
├301 LDA $9┴ GET OUTPUT DEVICE
├303 CMP #$03 OUTPUT ON SCREEN?
├305 BEQ $├30┴ YES, THEN NEW ROUTINE
├307 JMP $╞1─5 IF NOT SCREEN THEN BACK TO ╦┼╥╬┴╠
├30┴ PLA
├30┬ PHA GET BYTE IN ACCU AGAIN
├30├ STA $─7 SAVE BYTE IN $D7
├30┼ TXA
├30╞ PHA X ON STACK
├310 TYA
├311 PHA Y ON STACK
├312 LDA $─7 GET SAVED BYTE
├314 LDX $├59┼ READ LEADIN-FLAG
├317 BEQ $├329 TEST WHEN THERE IS NO LEADIN
├319 STA $2─ ELSE SAVE BYTE AS ERROR NUMBER
├31┬ LDA #$00 ACCU:=╞┴╠╙┼
├31─ STA $├59┼ RESET LEADIN FLAG
├320 LDA $0800 SET FLAG FOR ERROR MESSAGE
├323 JSR $├341 ERROR MESSAGE
├326 JMP $┼6┴8 CLOSE ROUTINE
├329 CMP #$07 CHR$(7) ?
├32┬ BNE $├333 IF NOT CHR$(7) THEN TEST
├32─ JSR $├5┬5 BEEP
├330 JMP $┼6┴8 CLOSE ROUTINE
├333 CMP #$1┬ CHR$(27) ? (LEADIN)
├335 BNE $├33┼ IF NOT THEN GIVE OUT
├337 LDA #$╞╞ ACCU:=╘╥╒┼
├339 STA $├59┼ SET LEADIN FLAG
├33├ BNE $├330 CLOSE ROUTINE
├33┼ JMP $┼71─ GIVE OUT
├341 JSR $├9┬╞ ERROR MESSAGE
├344 RTS ROOM FOR A JMP
├345 00 FREE
├346 00 FREE
├347 LDA #$00 POINTER ON $C400
├349 LDY #$├4
├34┬ STA $0324
├34┼ STY $0325 SET CHRIN VECTOR ON $C400
├351 LDA #$00 POINTER ON $C300
├353 LDY #$├3
├355 STA $0326
├358 STY $0327 SET CHROUT VECTOR ON $C300
├35┬ LDA #$51
├35─ STA $19┬0
├360 JMP $├8┼5 CONTINU INIT ON $C8E5
├363 CMP #$0┬ ^K ? (DELETE TO END OF LINE)
├365 BNE $├377 IF NOT THEN TEST
├367 LDA #$20 SPACE IN ACCU TO DELETE REST OF LINE
├369 LDY $─3 READ X-POSITION OF CURSOR
├36┬ STA ($─1),Y ERASE
├36─ INY NEXT CHARACTER ON LINE
├36┼ CPY $─5 INDEX EQUALS LINE LENGTH?
├370 BCC $├36┬ LOWER THEN ERASE
├372 BEQ $├36┬ EQUAL THEN ERASE LAST CHAR
├374 JMP $├4├┴ WAIT FOR KEY STROKE
├377 CMP #$15 ^U ? (CURSOR TO START OF LINE)
├379 BNE $├381 IF NOT THEN TEST
├37┬ LDA #$00
├37─ STA $─3 ZERO X-POSITION OF CURSOR
├37╞ BEQ $├374 WAIT FOR KEY STROKE
├381 CMP #$0╞ ^O (END OF LINE)
├383 BNE $├395 IF NOT, NO SPECIAL CHAR
├385 LDY $─5 GET LINE LENGTH
├387 LDA ($─1),Y GET CHAR IN Y
├389 CMP #$20 IS IT A SPACE?
├38┬ BNE $├390 IF NOT THEN END OF LINE IS FOUND
├38─ DEY ELSE A POSITION BACK
├38┼ BNE $├387 NOT ZERO YET, THEN GO ON
├390 STY $─3 CURSOR POSITION TO END OF LINE
├392 JMP $├4├┴ WAIT FOR NEXT KEY STROKE
├395 RTS NO SPECIAL CHAR
├396 LDA #$94 CODE INSERT IN ACCU
├398 JSR $┼716 TO SCREEN
├39┬ LDA #$00
├39─ STA $─8 ZERO NUMBER OF INSERTS
├39╞ JMP $┼6┴8 CLOSE ROUTINE
├3┴2-├3╞╞ SCR SCRATCH AREA FOR FUTURE EXTENSIONS
├400 LDA $99 INPUT FROM?
├402 BNE $├40╞ NOT FROM KEYBOARD THEN BACK TO ╦┼╥╬┴╠
├404 LDA $─3 X-POSITION CURSOR
├406 STA $├┴ X-POSITIE FOR INPUT
├408 LDA $─6 Y-POSITIE CURSOR
├40┴ STA $├9 Y-POSITIE FOR INPUT
├40├ JMP $├469 IS IT A SPECIAL CHARACTER?
├40╞ JMP $╞166 BACK TO ╦┼╥╬┴╠
├412 JSR $├477 CHAR TO SCREEN
├415 LDA $├6 NUMBER OF CHARS IN KEYBOARD BUFFER
├417 STA $├├ 0 = FLASH CURSOR
├419 STA $0292 0 = AUTO SCROLL DOWN
├41├ BEQ $├415 WAIT FOR KEY STROKE
├41┼ SEI NO INTERRUPTS NOW, NO FLASHING CURSOR
├41╞ LDA $├╞ CURSOR ON?
├421 BEQ $├42╞ JUMP IF NOT ON
├423 LDA $├┼ GET CHAR UNDER CURSOR
├425 LDX $0287 GET COLOR UNDER CURSOR
├428 LDY #$00
├42┴ STY $├╞ CURSOR OFF
├42├ JSR $┼┴13 CHAR AND COLOR BACK AGAIN (CURSOR OFF)
├42╞ JSR $┼5┬4 GET CHAR FROM KEYBOARD BUFFER
├432 JSR $├4┴1 TEST IF SPECIAL CHAR
├435 CMP #$0─ WAS IT A RETURN?
├437 BNE $├412 IF NOT THEN GIVE OUT CHAR
├439 LDY $─5 GET LINE LENGTH
├43┬ STY $─0 CR FLAG TRUE
├43─ LDA ($─1),Y READ CHAR FROM LINE
├43╞ CMP #$20 IS IT A SPATIE?
├441 BNE $├446 IF NOT THEN TEST PREVIOUS CHAR
├443 DEY INDEX ONE POSITION BACK
├444 BNE $├43─ IF NOT AT START OF LINE, THEN TEST
├446 INY ONE POSITION FORWARD
├447 STY $├8 MARK AS END OF LINE
├449 LDY #$00
├44┬ STY $0292 AUTO SCROLL DOWN ON
├44┼ STY $─3 X POSITION AT START LINE
├450 STY $─4 QUOTE MODE FLAG FALSE
├452 LDA $├9 GET LINE NUMBER
├454 BMI $├471 IFNOT VALID THEN READ FROM START
├456 LDX $─6 GET PHYSICAL LINE NUMBER
├458 JSR $┼6┼─ CALCULATE LOGICAL LINE NUMBER
├45┬ CPX $├9 EQUALS LINE NUMBER OF INPUT?
├45─ BNE $├471 IF NOT THEN READ FROM START
├45╞ LDA $├┴ GET X POSITION OF INPUT
├461 STA $─3 INDEX OF FIRST CHAR TO READ
├463 CMP $├8 END OF LOGICAL INPUT LINE?
├465 BCC $├471 LESS THEN READ
├467 BCS $├474 GREATER OR EQUAL, THEN READ NEW LINE
├469 TYA
├46┴ PHA SAVE Y-REGISTER
├46┬ TXA
├46├ PHA SAVE X-REGISTER
├46─ LDA $─0 GET CR FLAG
├46╞ BEQ $├415 READ NEW LINE
├471 JMP $┼63┴ IF NOT THEN ╦┼╥╬┴╠ (READ CHAR)
├474 JMP $┼65─ READ LINE
├477 PHA SUBROUTINE, CHAR OUT
├478 STA $─7 SAVE CHAR ON $D7
├47┴ TXA
├47┬ PHA SAVE X REGISTER
├47├ TYA
├47─ PHA SAVE Y REGISTER
├47┼ LDA $─7 GET CHAR BACK
├480 CMP #$22 QUOTE OUT?
├482 BNE $├48╞ IF NOT THEN TEST
├484 BIT $├4┴0 QUOTEMODE ON?
├487 BMI $├48├ JUMP IF 7TH BIT IS SET (QUOTEMODE ON)
├489 JMP $┼693 NO QUOTEMODE
├48├ JMP $┼73╞ QUOTEMODE
├48╞ CMP #$94 CODE FOR INSERT?
├491 BEQ $├496 IF SO THEN DO SO
├493 JMP $┼71─ NO SPECIAL CHAR, DO NORMAL ROUTINE
├496 BIT $├4┴0 INSERT MODE ON?
├499 BVS $├493 BIT 6 SET, THEN INSERT MODE
├49┬ JMP $├396 OUT WITHOUT INSERT MODE
├49┼ 00 FREE
├49╞ 00 FREE
├4┴0 00 QUOTEFLAG BIT 7:1 = QUOTEMODE
BIT 6:1 = INSERTMODE
├4┴1 CMP #$16 ^V ? (SET COLORS)
├4┴3 BNE $├4┬7 IF NOT THEN TEST
├4┴5 LDA #$0┬ COLOR 11 (= GREY 1)
├4┴7 STA $─020 SET BORDER COLOR
├4┴┴ LDA #$00 COLOR 0 (= BLACK)
├4┴├ STA $─021 SET BACKGROUND COLOR
├4┴╞ LDA #$01 COLOR 1 (= WHITE)
├4┬1 STA $0286 SET TEXT COLOR
├4┬4 JMP $├4├┴ EDIT LINE
├4┬7 CMP #$17 ^W ? (SET COLORS)
├4┬9 BNE $├4├╞ IF NOT THEN TEST
├4┬┬ LDA #$0┼ COLOR 14 (= LIGHT BLUE)
├4┬─ STA $─020 SET BORDER COLOR
├4├0 LDA #$06 COLOR 6 (= BLUE)
├4├2 STA $─021 SET BACKGROUND COLOR
├4├5 LDA #$0┼ COLOR 14 (= LIGHT BLUE)
├4├7 STA $0286 ZET TEXT KLEUR
├4├┴ PLA
├4├┬ PLA NO RTS, SO GET 2 BYTE FROM STACK
├4├├ JMP $├415 EDIT
├4├╞ CMP #$01 ^A ? (REMOVE INDENTION)
├4─1 BNE $├50┼ IF NOT THEN TEST
├4─3 LDA $─5 GET PHYSICAL LINE LENGTH
├4─5 CMP #$28 40 CHARS?
├4─7 BCC $├4├┴ IF SO THEN READY
├4─9 LDY #$28 TO 41TH POSITION
├4─┬ LDA ($─1),Y READ 41TH CHAR
├4── CMP #$20 IS IT A SPACE?
├4─╞ BNE $├4├┴ IF NOT THEN READY (NO INDENT)
├4┼1 LDA $─3 GET X-POSITION CURSOR
├4┼3 PHA SAVE IT
├4┼4 LDA #$00
├4┼6 PHA ZERO ON STACK
├4┼7 LDA #$00
├4┼9 STA $─8 ZERO NUMBER OF INSERTS
├4┼┬ LDY #$29 SEARCH FROM 42TH CHAR
├4┼─ LDA ($─1),Y READ CHAR
├4┼╞ CMP #$20 IS IT A SPACE?
├4╞1 BNE $├4╞┴ IF NOT THEN FIRST CHAR FOUND
├4╞3 INY NEXT CHAR
├4╞4 CPY #$50 LAST CHAR?
├4╞6 BCC $├4┼─ IF NOT THEN TEST
├4╞8 BCS $├506 IF SO STACK BACK AND READY
├4╞┴ STY $─3 X-POSITIE CURSOR ON THAT CHAR
├4╞├ LDA #$14 CODE FOR DELETE
├4╞┼ JSR $┼716 REMOVE SPACE
├501 DEY POSITION MINUS ONE
├502 CPY #$29 40TH CHAR?
├504 BCS $├4╞┼ IF NOT THEN REMOVE MORE SPACES
├506 PLA
├507 STA $─8 ZERO NUMBER OF INSERT
├509 PLA
├50┴ STA $─3 X-POSITIE BACK
├50├ BPL $├4├┴ AND EDIT
├50┼ CMP #$83 CODE FOR SHIFT ╥╒╬/╙╘╧╨ ?
├510 BNE $├516 IF NOT THEN TEST
├512 LDA #$84 CHANGE CODE IN $84
├514 BNE $├51┼ TREAT IT AS A FUNCTION KEY
├516 CMP #$85 F1
├518 BCC $├540 LESS THEN NO FUNCTION KEY
├51┴ CMP #$8─ F8+1
├51├ BCS $├540 GREATER ORR EQUAL THEN NO FUNCTION KEY
├51┼ SEC SET CARRY
├51╞ SBC #$84 SUBSTRACT $84
├521 ASL A DOUBLE
├522 STA $├543 SAVE
├525 ASL A DOUBLE
├526 ASL A DOUBLE (8 TIMES)
├527 ADC $├543 ADD WITH 2*NUM (NOW 10*GETAL)
├52┴ TAX USE THIS RESULT AS INDEX
├52┬ LDY #$00 ZERO Y
├52─ LDA $├544,X GET FUNCTION TEXT
├530 BEQ $├53┬ IF LAST CHAR THEN READY
├532 STA $0277,Y TEXT INTO KEYBOARD BUFFER
├535 INX INDEX +1
├536 INY NEXT CHAR
├537 CPY #$0┴ 10TH CHAR?
├539 BCC $├52─ IF NOT GO ON
├53┬ STY $├6 NUMBER OF CHARS IN BUFFER
├53─ JMP $├4├┴ READY AND EDIT
├540 JMP $├363 TEST ON SPECIAL CHARS
├543 00 TEMPORARY FOR MULTIPLICATION
├544-├54─ TEXT FOR SHIFT ╥╒╬/╙╘╧╨
├54┼-├557 TEXT FOR ╞1
├558-├561 TEXT FOR ╞3
├562-├56┬ TEXT FOR ╞5
├56├-├575 TEXT FOR ╞7
├576-├57╞ TEXT FOR ╞2
├580-├589 TEXT FOR ╞4
├58┴-├593 TEXT FOR ╞6
├594-├59─ TEXT FOR ╞8
├59┼ 00 FLAG LEADIN
├59╞ 00 FREE
├5┴0 LDX #$18 NUMBER OF ╙╔─ REGISTERS IN X
├5┴2 LDA #$00 ZERO ACCU
├5┴4 STA $─400,X RESET REGISTER X
├5┴7 DEX NEXT REGISTER
├5┴8 BPL $├5┴4 MORE THEN JUMP
├5┴┴ RTS READY
├5┴┬ JSR $├5┴┴ WAIT (EMPTY ROUTINE)
├5┴┼ DEX X:-1
├5┴╞ BNE $├5┴┬ JUMP FOR LONGER WAIT
├5┬1 DEY Y:-1
├5┬2 BNE $├5┴┬ AND JUMP
├5┬4 RTS READY
├5┬5 JSR $├5┴0 INIT ╙╔─
├5┬8 LDX #$03 SET FIRST FOUR REGISTERS
├5┬┴ LDA $├5╞6,X GET VALUE FROM TABLE
├5┬─ STA $─400,X SET REGISTER (TONE AND PULSE)
├5├0 DEX INDEX:-1
├5├1 BPL $├5┬┴ IF NOT LAST REG THEN JUMP
├5├3 LDA $├5╞┬ READ ATTACK & DECAY
├5├6 STA $─405 SET ATTACK & DECAY
├5├9 LDA $├5╞├ READ SUSTAIN & RELEASE
├5├├ STA $─406 SET SUSTAIN & RELEASE
├5├╞ LDA $├5╞─ READ VOLUME
├5─2 STA $─418 SET VOLUME
├5─5 LDA $├5╞┴ READ SOUNDTYPE
├5─8 ORA #$01 SET GATE BIT
├5─┴ STA $─404 SET SOUNDTYPE & GATEBIT IN ╙╔─
├5── LDY $├5╞┼ READ GATE TIME
├5┼0 JSR $├5┴┬ AND WAIT FOR GATE
├5┼3 LDA $├5╞┴ RESET GATEBIT
├5┼6 STA $─404 SET SOUNDTYPE WITHOUT GATE
├5┼9 LDY $├5╞╞ RAED RELEASE TIME
├5┼├ JSR $├5┴┬ WAIT FOR RELEASE
├5┼╞ JSR $├5┴0 RESET ╙╔─ AGAIN
├5╞2 LDA $0800 GET FLAG FOR ERROR MESSAGE
├5╞5 RTS READY
├5╞6 00 FREQ LOW
├5╞7 30 FREQ HIGH
├5╞8 00 PULSE/PAUSE LOW
├5╞9 08 PULSE/PAUSE HIGH
├5╞┴ 40 SOUNDTYPE WITHOUT GATE BIT
├5╞┬ 00 ATTACK/DECAY
├5╞├ ╞0 SUSTAIN/RELEASE
├5╞─ 0╞ VOLUME
├5╞┼ 10 GATE TIME
├5╞╞ 01 RELEASE TIME
├600 LDX #$3├ POINTER ON $033C
├602 LDY #$03
├604 STX $┬2
├606 STY $┬3 SET POINTER CASSETTE BUFFER
├608 JMP $╞─15 SET ╦┼╥╬┴╠ VECTORS
├60┬ CPX #$08 DEVICE 8? (DISK)
├60─ BEQ $├611 THEN NO OTHER SEC ADDRESS
├60╞ LDY #$00 SECONDARY ADDRESS FOR TAPE
├611 JMP $╞╞┬┴ SET FILE PARAMETERS
├614 STY $02 SAVE INDEX IN MEMORY
├616 JSR $╞╞├╞ GET BYTE FROM DEVICE
├619 TAY SAVE IT IN Y
├61┴ LDA $┬┴ GET DEVICE ADDRESS
├61├ CMP #$01 IS IT TAPE?
├61┼ BNE $├621 IF NOT THEN READY
├620 DEY VALUE MINUS 1
├621 TYA BYTE IN ACCU AGAIN
├622 LDY $02 GET Y REGISTER
├624 RTS READY
├625 LDA #$26
├627 STA $2╞52 PREVENTS TAPE RUNNING AFTER RESET
├62┴ LDA #$02
├62├ STA $2╞5┬ BORDER COLOR ON ├╧═┴╠ STARTUP
├62╞ LDA #$00
├631 STA $2╞56 BACKGROUND COLOR
├634 LDA #$01
├636 STA $0286 TEXT COLOR
├639 LDA #$55 'U'
├63┬ STA $2402 USR FILES FOR ┼╬╘┼╥/╠╔╙╘
├63┼ LDA #$02
├640 STA $2┼┼2 BORDER COLOR AFTER RESTORE
├643 LDA #$00
├645 STA $2┼┼7 BACKGROUND COLOR
├648 LDA #$01
├64┴ STA $2┼┼├ TEXT COLOR
├64─ JMP $├347 VECTOREN CHRIN EN CHROUT ZETTEN
├650 00 FREE
├651 00 FREE
├652 00 FREE
├653-├7┴9 TEXT FOR ─UTCH ├╧═┴╠ ╒SERS ╟ROUP
├7─7-├7─╞ FILENAME 'COMAL.14'
├7├0-├7╞0 LENGTH FOLLOWD BY NAME OF ┬┴╙╔├ PROGRAM (TURBO)
├7╞1 00 FREE
▀-18-
├7╞2 LDA $┬┴ GET LAST USED DEVICE
├7╞4 STA $8004 SAVE IT ON $8004
├7╞7 LDX #$╞╞ INIT VALUE FOR STACK
├7╞9 SEI NO INTERRUPTS NOW
├7╞┴ TXS RESET STACK POINTER
├7╞┬ CLD NO DECIMALE MODE
├7╞├ JSR $╞─┴3 PREPARE FOR INTERRUPTS
├7╞╞ LDY #$00 INIT INDEX REGISTER
├801 TYA ZERO ACCU
├802 STA $0002,Y RESET ZERO PAGE
├805 STA $0200,Y RESET PAGE 2
├808 STA $0300,Y RESET PAGE 3
├80┬ INY INDEX:+1
├80├ BNE $├802 LAST BYTE?
├80┼ LDA #$08 LOW BYTE IS ZERO
├810 STA $0282 SET BOTTOM ON $0800
├813 LDA #$┴0 LOW BYTE IS ZERO
├815 STA $0284 SET TOP ON $A000
├818 LDA #$04
├81┴ STA $0288 SCREEN ON PAGE 4 ($0400)
├81─ JSR $├600 SET CASSETTE BUFFER AND INIT VECTORS
├820 JSR $╞╞5┬ RESET VIDEO CHIP
├823 CLI INTERRUPTS ON
├824 JSR $┼453 RESET ┬┴╙╔├ VECTOR TABLE
├827 JSR $┼3┬╞ INIT ┬┴╙╔├ VARIABELEN
├82┴ JSR $┴644 ┬┴╙╔├ ╬┼╫
├82─ LDX #$╞┬
├82╞ TXS SET STACK FOR ┬┴╙╔├
├830 JSR $├89┼ INTRO ON SCREEN
├833 LDA $├7┼0 READ NAME LENGTH
├836 LDX #$┼1 LOW BYTE ADDRESS NAME (ON $C7E1)
├838 LDY #$├7 HIGH BYTE ADDRESS NAME
├83┴ JSR $╞╞┬─ SET FILENAME
├83─ LDX $8004 READ DEVICE
├840 LDY #$╞╞ NO SECONDARY ADDRESS NEEDED
├842 JSR $╞╞┬┴ SET FILE PARAMETERS
├845 LDA #$00 SET FLAG FOR LOAD
├847 JSR $╞╞─5 LOAD PROGRAM
├84┴ BCS $├866 ON ERRORS JUMP OVER ╥╒╬ PART
├84├ STX $2─
├84┼ STY $2┼ SET END OF PROGRAM
├850 JSR $┴659 ├╠╥ AND POINTER OF ┬┴╙╔├ INTERPRETER ON START
├853 JSR $┴533 CALCULATE INTERN POINTERS OF PROGRAM
├856 LDA #$63
├858 LDY #$├8 POINTER ON $C863
├85┴ STA $0300
├85─ STY $0301 SET ┬┴╙╔├ WARM START VECTOR
├860 JMP $┴7┴┼ JUMP INTO ┬┴╙╔├ INTERPRETER (╥╒╬)
├863 JSR $┼453 RESET ┬┴╙╔├ VECTORS
├866 LDA #$08 LENGTH NAME=8
├868 LDX #$─8 LOW ADRES 'COMAL.14' (IS ON $C7D8)
├86┴ LDY #$├7 HIGH ADRES 'COMAL.14'
├86├ JSR $╞╞┬─ SET FILENAME
├86╞ LDA #$00 FLAG FOR LOAD
├871 JSR $╞╞─5 LOAD COMAL.14
├874 BCC $├879 JUMP IF THERE ARE NO ERRORS
├876 JMP $┼0╞9 ERROR MESSAGE AND BACK TO ┬┴╙╔├
├879 JSR $╞─15 RESET ╦┼╥╬┴╠ VECTORS
├87├ JSR $├625 CHANGE ├╧═┴╠
├87╞ JSR $├95┼ READ ERROR MESSAGE FILE
├882 BCC $├887 JUMP IF NO ERRORS
├884 JSR $├931 HANDLE ERRORS
├887 JSR $2╞04 INIT ├╧═┴╠ VARIABLES
├88┴ LDX #$53 FIRST STRING
├88├ LDA #$├6 POINTER ON $C653
├88┼ JSR $3103 TEXT OUT
├891 LDX #$4┼ SECOND STRING
├893 LDA #$├7 POINTER ON $C74E
├895 JSR $3103 TEXT OUT
├898 JSR $├906 ┼╥╥╧╥ ═┼╙╙┴╟┼╙ ╔╬ ═┼═╧╥┘? (┘/╬)
├89┬ JMP $2╞80 JUMP TO ├╧═┴╠
├89┼ LDA #$02 COLOR 2 (= RED)
├8┴0 STA $─020 SET BORDER COLOR
├8┴3 LDA #$00 COLOR 0 (= BLACK)
├8┴5 STA $─021 SET BACKGROUND COLOR
├8┴8 LDA #$08
├8┴┴ JSR $╞╞─2 DISABLE FONT SWITCH
├8┴─ LDA #$8┼
├8┴╞ JSR $╞╞─2 SET LOWER CASE
├8┬2 LDY #$37
├8┬4 LDA #$08 POINTER ON $0837
├8┬6 STY $╞┬
├8┬8 STA $╞├ INTRO SCREEN
├8┬┴ LDY #$00
├8┬├ LDA #$04 POINTER ON $0400
├8┬┼ STY $╞─
├8├0 STA $╞┼ POINTER ON SCREEN MEMORY
├8├2 LDX #$04 MOVE 4 PAGES
├8├4 LDA ($╞┬),Y READ BYTE
├8├6 STA ($╞─),Y MOVE BYTE
├8├8 INY NEXT BYTE
├8├9 BNE $├8├4 NEXT PAGE?
├8├┬ INC $╞├ NEXT PAGE INTRO SCREEN
├8├─ INC $╞┼ NEXT PAGE SCREEN
├8├╞ DEX PAGE COUNT:-1
├8─0 BNE $├8├4 NOT LAST PAGE THEN MOVE
├8─2 LDA #$─8 LOW BYTE IS ZERO
├8─4 STA $╞┼ POINTER ON COLOR SCREEN
├8─6 LDA #$01 KLEUR 1 (= WHITE)
├8─8 LDX #$04 4 PAGES TOO
├8─┴ STA ($╞─),Y SET COLOR
├8─├ INY NEXT BYTE
├8── BNE $├8─┴ NEXT PAGE?
├8─╞ INC $╞┼ VERHOOG PAGINA KLEURENSCHERM
├8┼1 DEX VERLAAG PAGINATELLER
├8┼2 BNE $├8─┴ LAST PAGE?
├8┼4 RTS IF SO THEN READY
├8┼5 LDA #$60 RTS INSTRUCTION IN ACCU
├8┼7 STA $2╞5╞ SET RTS AFTER INIT ROUTINE ├╧═┴╠
├8┼┴ LDA #$00
├8┼├ STA $0342 INIT FOR ├╧═┴╠
├8┼╞ LDX #$0┴ MOVE 10 BYTES
├8╞1 LDA $├8╞┬,X READ BYTE
├8╞4 STA $1942,X SET BYTE IN ├╧═┴╠
├8╞7 DEX NEXT BYTE
├8╞8 BPL $├8╞1 LAST ONE?
├8╞┴ RTS IF SO THEN READY
├8╞┬ JSR $6┬02 ROUTINE FOR ERROR MESSAGE ├╧═┴╠
├8╞┼ LDA $10─8 GET MSG FLAG
├901 BEQ $├968 FALSE THEN GO ON IN ├╧═┴╠
├903 JSR $├9┬├ ERROR MESSAGE
├906 LDA $0800 GET FLAG (0 = MESSAGES IN MEMORY)
├909 BNE $├929 IF NOT IM MEMORY THEN READY
├90┬ LDX #$┴┴ TEXT 'FOUTMELDINGEN IN GEHEUGEN?'
├90─ LDA #$├7 POINTER ON $C7AA
├90╞ JSR $3103 STRING OUR
├912 JSR $╞╞┼4 GET CHAR FROM KEYBOARD BUFFER
├915 CMP #$4┴ IS IT 'J'?
├917 BEQ $├92┴ JA, THEN 'JA' OUT
├919 CMP #$4┼ IS IT 'N'?
├91┬ BNE $├912 NO THEN SCAN
├91─ LDX #$─2 TEKST 'NEE'
├91╞ LDA #$├7 POINTER ON $C7D2
├921 JSR $3103 STRING OUT
├924 LDA #$01 FLAG FOR NO ERROR MESSAGES IN MEMORY
├926 STA $0800 SET FLAG TRUE
├929 RTS READY
├92┴ LDX #$├─ TEXT 'NEE'
├92├ LDA #$├7 POINTER ON $C7CD
├92┼ JMP $3103 STRING OUTGEVE▀-21-
├931 LDX #$01 ERROR MESSAGE, NOT IN MEMORY
├933 STX $0800 SET FLAG TRUE
├936 CMP #$04 ERROR 4 ('FILE NOT FOUND')
├938 BNE $├954 IF NOT TEST
├93┴ LDA $┬┴ READ DEVICE
├93├ CMP #$08 DRIVE?
├93┼ BNE $├958 IF NOT THEN SETMSG-
├940 JSR $╞╞┬4 SEND LISTEN
├943 LDA #$6╞ ERROR CHANNEL IN ACCU
├945 STA $┬9 SET SEC ADDRESS
├947 JSR $╞╞96 SEND SECONDARY ADDRESS
├94┴ JSR $╞╞┴5 READ BYTE
├94─ CMP #$0─ END OF LINE?
├94╞ BNE $├94┴ IF NOT THEN READ
├951 JMP $╞╞┴┬ SEND UNLISTEN
├954 CMP #$05 ERROR 5 ('DEVICE NOT PRESENT')
├956 BNE $├95─ IF NOT THEN READY
├958 LDA #$00 FLAG FALSE
├95┴ STA $10─8 SETMSG-
├95─ RTS READY
├95┼ LDA #$0┬ NAME LENGTH=11
├960 LDX #$25 FILENAME 'COMALERRORS'
├962 LDY #$11 POINTER ON $1125
├964 JSR $╞╞┬─ SET FILENAAM
├967 LDA #$01 FILENUMBER 1 IN ACCU
├969 LDX $┬┴ LAST USED DEVICE IN X
├96┬ LDY #$62 SECONDARY ADDRESS 2
├96─ JSR $├60┬ TEST FOR CHANGE IN SEC ADDRESS
├970 JSR $╞╞├0 OPEN FILE
├973 BCS $├9┴7 ERRORS, THEN READY
├975 LDX #$01 FILE 1 IN X
├977 JSR $╞╞├6 CHKIN FOR FILE 1
├97┴ LDY #$00
├97├ LDA #$├┴ POINTER ON $CA00
├97┼ STY $╞┬
├980 STA $╞├ SET POINTER ON START TEXT
├982 LDY #$00 INDEX ON NUL
├984 JSR $├614 READ BYTE FROM FILE
├987 STA ($╞┬),Y SAVE BYTE IN MEMORY
├989 LDA $90 GET STATUS
├98┬ LSR A
├98├ LSR A TEST EOI, BIT 1
├98─ BCC $├993 CARRY NOT SET THEN OK
├98╞ LDA #$04 ELSER ERROR 4
├991 BCS $├9┴7 OVER AND OUT
├993 JSR $├9┬6 POINTER:+1
├996 JSR $├614 READ BYTE FROM FILE
├999 STA ($╞┬),Y SAVE BYTE
├99┬ JSR $├9┬6 POINTER:+1
├99┼ BIT $90 TEST STATUS BYTE
├9┴0 BVC $├996 BIT 6 NOT SET (EOF), THEN READ ON
├9┴2 LDA #$╞╞ MARK ON END OF TEXT
├9┴4 STA ($╞┬),Y MARK IN MEMORY
├9┴6 CLC FLAG: NO ERROR
├9┴7 PHP SAVE CARRY ON STACK
├9┴8 PHA SAVE ACCU (WITH EVENT ERRORNUMBER) ON STACK TOO
├9┴9 LDA #$01 FILE 1 IN ACCU
├9┴┬ JSR $╞╞├3 CLOSE FILE 1
├9┴┼ JSR $╞╞├├ RESET I/O
├9┬1 PLA GET ACCU
├9┬2 PLP GET CARRY
├9┬3 RTS READY
├9┬4 LDA ($╞┬),Y READ BYTE FROM MEMORY
├9┬6 INY INDEX:+1
├9┬7 BNE $├9┬┬ NEW PAGE?
├9┬9 INC $╞├ IF SO THEN INCREMENT PAGE COUNTER
├9┬┬ RTS READY
├9┬├ JSR $├5┬5 BEEP ROUTINE
├9┬╞ BNE $├9╞┴ IF NO MESSAGES IN MEMORY GEHEUGEN THEN READY
├9├1 LDY #$00
├9├3 LDA #$├┴ POINTER ON $CA00
├9├5 STY $╞┬
├9├7 STA $╞├ SET POINTER ON TEXT
├9├9 LDY #$00 ZERO INDEX
├9├┬ JSR $├9┬4 GET BYTES FROM MEMORY
├9├┼ CMP #$╞╞ END OF TEXT?
├9─0 BEQ $├9╞┬ IF SO THEN 'ERROR' OUT
├9─2 CMP $2─ FOUND ERROR NUMBER?
├9─4 BEQ $├9┼4 IF SO THEN OUT
├9─6 JSR $├9┬4 GET BYTE
├9─9 STA $2┬ SAVE LENGTH
├9─┬ JSR $├9┬4 GET CHAR
├9─┼ DEC $2┬ LENGTH;:-1
├9┼0 BPL $├9─┬ NEXT IF LENGTH<>0
├9┼2 BMI $├9├┬ AND GO ON
├9┼4 JSR $├9┬4 GET CHAR
├9┼7 STA $2┬ SAVE AS LENGTH
├9┼9 JSR $├9┬4 GET CHAR
├9┼├ STA $19 SAVE AS FLAG
├9┼┼ JSR $├9┬4 GET CHAR
├9╞1 JSR $╞╞─2 CHAR OUT
├9╞4 DEC $2┬ LENGTH:-1
├9╞6 BNE $├9┼┼ JUMP IF THERE IS TEXT
├9╞8 PLA GET BYTE FROM STACK
├9╞9 PLA GET ASECOND CHAR
├9╞┴ RTS BACK TO ├╧═┴╠
├9╞┬ PLA GET BYTE FROM STACK
├9╞├ PLA GET BYTE FROM STACK
├9╞─ JMP $19┴╞ 'ERROR' OUT
0814 LDY #$37
0816 LDA #$0├ POINTER ON $0C37
0818 STY $╞┬
081┴ STA $╞├ SET SOURCE ADDRESS
081├ LDY #$00
081┼ LDA #$├3 POINTER ON $C300
0820 STY $╞─
0822 STA $╞┼ SET DESTINATION ADDRESS
0824 LDX #$07 MOVE 7 PAGES
0826 LDA ($╞┬),Y LOAD BYTE
0828 STA ($╞─),Y MOVE BYTE
082┴ INY NEXTBYTE
082┬ BNE $0826 BYTES LEFT ON THIS PAGE, THEN JUMP
082─ INC $╞├ NEXT PAGE SOURCE
082╞ INC $╞┼ NEXT PAGE DESTIN
0831 DEX PAGE COUNTER:-1
0832 BNE $0826 ANOTHER PAGE?
0834 JMP $├7╞2 JUMP TO BOOT
3103 STA $76
3105 STX $75 SAVE POINTER IN X/A
3107 LDY #$00
3109 LDA ($75),Y GET BYTE
310┬ BEQ $3114 CODE FOR LAST CHAR?
310─ JSR $╞╞─2 IF NOT THEN CHAR OUT
3110 INY NEXT BYTE
3111 JMP $3109 ENDLOOP
3114 RTS AND READY
▒ DOCUMENTATIE ┬╧╧╘═.05
▒ ▒┐